package ar.utn.frgp.banco.front.action.clientes;

import ar.utn.frgp.banco.dto.ClienteDTO;
import ar.utn.frgp.banco.entity.Cliente;
import ar.utn.frgp.banco.exceptions.PersonalisedException;
import ar.utn.frgp.banco.front.action.EBAbstractAction;
import ar.utn.frgp.banco.service.OperacionesClienteServ;

public class CrearClienteAction extends EBAbstractAction{

	/**
	 * 
	 */
	
	private static final long serialVersionUID = 2257913940711060193L;

	private OperacionesClienteServ gestionClientesService;
	
	private ClienteDTO clienteDTO;
	
	@Override
	public String execute() throws PersonalisedException {
		
		Cliente cliente = new Cliente();
		
		if(clienteDTO !=  null){

			cliente.setDni(clienteDTO.getDni());
			cliente.setNombre(clienteDTO.getNombre());
			cliente.setApellido(clienteDTO.getApellido());
			cliente.setDireccion(clienteDTO.getDireccion());
			cliente.setMail(clienteDTO.getMail());
			cliente.setClave(clienteDTO.getClave());
		}
		try {
			gestionClientesService.crearCliente(cliente);
			
		} catch (PersonalisedException e) {
			addActionError("El cliente ya existe");
			return ERROR;
		}
		
		return SUCCESS;
	}

	public void validate(){
		if(clienteDTO.getDni() == null || "".equals(clienteDTO.getDni())){
			addFieldError("clienteDTO.dni", getText("forms.requerido"));
		}else{
			try {
				Integer.valueOf(clienteDTO.getDni());			
			} catch (Exception e) {
				addFieldError("clienteDTO.dni", getText("Debe ingresar valor numerico	"));
			}
		}
		if(clienteDTO.getNombre() == null || "".equals(clienteDTO.getNombre())){
			addFieldError("clienteDTO.nombre", getText("forms.requerido"));	
		}
		if(clienteDTO.getApellido() == null || "".equals(clienteDTO.getApellido())){
			addFieldError("clienteDTO.apellido", getText("forms.requerido"));
		}
		if(clienteDTO.getDireccion() == null || "".equals(clienteDTO.getDireccion())){
			addFieldError("clienteDTO.direccion", getText("forms.requerido"));
		}
		if(clienteDTO.getClave() == null || "".equals(clienteDTO.getClave())){
			addFieldError("clienteDTO.clave", getText("forms.requerido"));
		}
	}
	public OperacionesClienteServ getGestionClientesService() {
		return gestionClientesService;
	}

	public void setGestionClientesService(
			OperacionesClienteServ gestionClientesService) {
		this.gestionClientesService = gestionClientesService;
	}

	public ClienteDTO getClienteDTO() {
		return clienteDTO;
	}

	public void setClienteDTO(ClienteDTO clienteDTO) {
		this.clienteDTO = clienteDTO;
	}
	
}
